﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Xml.Linq;
using Tridion.ContentManager.CoreService.Client;

namespace TridionDesktopTools.Core
{
    public interface ILocalClient
    {
        WorkItemData[] AddToWorkflow(string[] subjectIds, string activityInstanceId, ReadOptions readBackOptions);
        IAsyncResult BeginAddToWorkflow(string[] subjectIds, string activityInstanceId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginCastActions(int numericActions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginCastPredefinedQueue(int queueId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginCheckIn(string id, bool removePermanentLock, string userComment, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginCheckOut(string id, bool permanentLock, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginClassify(string id, string[] keywordIds, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginConvertSchemaFieldsToXsd(SchemaFieldsData schemaFieldsData, AsyncCallback callback, object asyncState);
        IAsyncResult BeginConvertSearchQueryToXml(SearchQueryData searchQueryData, AsyncCallback callback, object asyncState);
        IAsyncResult BeginConvertXmlToSearchQuery(XElement searchQueryXml, AsyncCallback callback, object asyncState);
        IAsyncResult BeginCopy(string id, string destinationId, bool makeUnique, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginCopyToKeyword(string sourceKeywordId, string destinationId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginCreate(IdentifiableObjectData data, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginDelete(string id, AsyncCallback callback, object asyncState);
        IAsyncResult BeginDeleteApplicationData(string subjectId, string applicationId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginDeleteTaxonomyNode(string id, DeleteTaxonomyNodeMode deleteTaxonomyNodeMode, AsyncCallback callback, object asyncState);
        IAsyncResult BeginFinishActivity(string activityInstanceId, ActivityFinishData activityFinishData, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginForceFinishProcess(string processInstanceId, string approvalStatusId, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetApiVersion(AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetApplicationIds(AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetContentSecurityDescriptorsForOrgItemIds(string[] organizationalItemIds, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetCurrentUser(AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetDefaultData(ItemType itemType, string containerId, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetEnumValues(string type, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetInstanceData(string schemaId, string containerItemId, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetList(string id, SubjectRelatedListFilterData filter, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListDirectoryServiceAllUsers(string directoryServiceName, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListDirectoryServiceGroupMembers(string directoryServiceName, string groupDN, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListDirectoryServiceNames(AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListDirectoryServiceUsers(string directoryServiceName, DirectoryUsersFilter filter, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListExternalLinks(string id, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListPublicationTypes(AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListPublishInfo(string itemId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListQueueMessages(int queueId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListQueues(AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListTemplateTypes(ItemType? itemType, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListWindowsDomainUsers(string domainName, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListWorkflowScriptTypes(AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetListXml(string id, SubjectRelatedListFilterData filter, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetPredefinedBatchOperationName(PredefinedBatchOperation operation, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetProcessDefinitionsForItems(string[] itemIds, ProcessDefinitionType processDefinitionType, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSearchResults(SearchQueryData filter, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSearchResultsPaged(SearchQueryData filter, int startRowIndex, int maxRows, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSearchResultsXml(SearchQueryData filter, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSearchResultsXmlPaged(SearchQueryData filter, int startRowIndex, int maxRows, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSecurityDescriptorsForSubjectsIds(string[] subjectIds, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSubjectIdsWithApplicationData(string applicationId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSystemWideList(SystemWideListFilterData filter, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSystemWideListXml(SystemWideListFilterData filter, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetSystemXsd(string filename, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetTcmUri(string baseUri, string contextRepositoryUri, uint? version, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetTridionLanguages(AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetVirtualFolderTypeSchema(string namespaceUri, AsyncCallback callback, object asyncState);
        IAsyncResult BeginGetWorkItemSnapshot(string workItemId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginIsExistingObject(string id, AsyncCallback callback, object asyncState);
        IAsyncResult BeginIsPublished(string itemId, string publicationTargetId, bool isPublishedInContext, AsyncCallback callback, object asyncState);
        IAsyncResult BeginIsValidTridionWebSchemaXml(SchemaData data, AsyncCallback callback, object asyncState);
        IAsyncResult BeginLocalize(string id, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginLock(string organizationalItemId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginMove(string id, string destinationId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginMoveToKeyword(string sourceKeywordId, string destinationId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginParsePredefinedBatchOperation(string operation, AsyncCallback callback, object asyncState);
        IAsyncResult BeginPreviewItem(RepositoryLocalObjectData itemData, TemplateData templateData, PublishInstructionData publishInstruction, string publicationTargetId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginPublish(string[] ids, PublishInstructionData publishInstruction, string[] targets, PublishPriority? priority, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginPurgeApplicationData(string applicationId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginPurgeOldVersions(PurgeOldVersionsInstructionData instruction, AsyncCallback callback, object asyncState);
        IAsyncResult BeginPurgeQueue(int queueId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginRead(string id, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginReadAllApplicationData(string subjectId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginReadApplicationData(string subjectId, string applicationId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginReadApplicationDataForSubjectsIds(string[] subjectIds, string[] applicationIds, AsyncCallback callback, object asyncState);
        IAsyncResult BeginReadSchemaFields(string schemaId, bool expandEmbeddedFields, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginReAssignActivity(string activityInstanceId, string newAssigneeId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginReClassify(string id, string[] keywordIdsToRemove, string[] keywordIdsToAdd, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginReIndex(string id, AsyncCallback callback, object asyncState);
        IAsyncResult BeginRemoveFromWorkflow(string[] subjectIds, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginRenderItem(string itemId, string templateId, PublishInstructionData publishInstruction, string publicationTargetId, AsyncCallback callback, object asyncState);
        IAsyncResult BeginResolveBundleTypes(string[] itemIds, bool pruneTree, AsyncCallback callback, object asyncState);
        IAsyncResult BeginResolveItems(string[] ids, ResolveInstructionData resolveInstruction, string[] targets, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginRestartActivity(string activityInstanceId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginResumeActivity(string activityInstanceId, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginRollback(string id, bool deleteVersions, string comment, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginSave(IdentifiableObjectData deltaData, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginSaveApplicationData(string subjectId, ApplicationData[] applicationData, AsyncCallback callback, object asyncState);
        IAsyncResult BeginStartActivity(string activityInstanceId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginStartWorkflow(string repositoryId, StartWorkflowInstructionData instruction, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginSuspendActivity(string activityInstanceId, string reason, DateTime? resumeAt, string resumeBookmark, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginTryCheckOut(string id, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginTryGetTcmUri(string baseUri, string contextRepositoryUri, uint? version, AsyncCallback callback, object asyncState);
        IAsyncResult BeginTryRead(string id, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginUnClassify(string id, string[] keywordIds, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginUndoCheckOut(string id, bool permanentLock, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginUndoPublishTransaction(string publishTransactionId, QueueMessagePriority? priority, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginUnLocalize(string id, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginUnlock(string organizationalItemId, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginUnPublish(string[] ids, UnPublishInstructionData unPublishInstruction, string[] targets, PublishPriority? priority, ReadOptions readOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginUpdate(IdentifiableObjectData deltaData, ReadOptions readBackOptions, AsyncCallback callback, object asyncState);
        IAsyncResult BeginValidateXml(IdentifiableObjectData data, AsyncCallback callback, object asyncState);
        ActionFlags CastActions(int numericActions);
        PredefinedQueue? CastPredefinedQueue(int queueId);
        VersionedItemData CheckIn(string id, ReadOptions readBackOptions);
        VersionedItemData CheckOut(string id, bool permanentLock, ReadOptions readBackOptions);
        ClassificationInfoData Classify(string id, string[] keywordIds, ReadOptions readOptions);
        XElement ConvertSchemaFieldsToXsd(SchemaFieldsData schemaFieldsData);
        XElement ConvertSearchQueryToXml(SearchQueryData searchQueryData);
        SearchQueryData ConvertXmlToSearchQuery(XElement searchQueryXml);
        RepositoryLocalObjectData Copy(string id, string destinationId, bool makeUnique, ReadOptions readBackOptions);
        KeywordData CopyToKeyword(string sourceKeywordId, string destinationId, ReadOptions readBackOptions);
        IdentifiableObjectData Create(IdentifiableObjectData data, ReadOptions readBackOptions);
        void Delete(string id);
        void DeleteApplicationData(string subjectId, string applicationId);
        void DeleteTaxonomyNode(string id, DeleteTaxonomyNodeMode deleteTaxonomyNodeMode);
        WorkItemData[] EndAddToWorkflow(IAsyncResult result);
        ActionFlags EndCastActions(IAsyncResult result);
        PredefinedQueue? EndCastPredefinedQueue(IAsyncResult result);
        VersionedItemData EndCheckIn(IAsyncResult result);
        VersionedItemData EndCheckOut(IAsyncResult result);
        ClassificationInfoData EndClassify(IAsyncResult result);
        XElement EndConvertSchemaFieldsToXsd(IAsyncResult result);
        XElement EndConvertSearchQueryToXml(IAsyncResult result);
        SearchQueryData EndConvertXmlToSearchQuery(IAsyncResult result);
        RepositoryLocalObjectData EndCopy(IAsyncResult result);
        KeywordData EndCopyToKeyword(IAsyncResult result);
        IdentifiableObjectData EndCreate(IAsyncResult result);
        void EndDelete(IAsyncResult result);
        void EndDeleteApplicationData(IAsyncResult result);
        void EndDeleteTaxonomyNode(IAsyncResult result);
        ActivityInstanceData EndFinishActivity(IAsyncResult result);
        ProcessHistoryData EndForceFinishProcess(IAsyncResult result);
        string EndGetApiVersion(IAsyncResult result);
        string[] EndGetApplicationIds(IAsyncResult result);
        SecurityDescriptorDataDictionary EndGetContentSecurityDescriptorsForOrgItemIds(IAsyncResult result);
        UserData EndGetCurrentUser(IAsyncResult result);
        IdentifiableObjectData EndGetDefaultData(IAsyncResult result);
        TridionEnumValue[] EndGetEnumValues(IAsyncResult result);
        InstanceData EndGetInstanceData(IAsyncResult result);
        IdentifiableObjectData[] EndGetList(IAsyncResult result);
        DirectoryServiceUser[] EndGetListDirectoryServiceAllUsers(IAsyncResult result);
        DirectoryServiceUser[] EndGetListDirectoryServiceGroupMembers(IAsyncResult result);
        string[] EndGetListDirectoryServiceNames(IAsyncResult result);
        DirectoryServiceUser[] EndGetListDirectoryServiceUsers(IAsyncResult result);
        XElement EndGetListExternalLinks(IAsyncResult result);
        PublicationType[] EndGetListPublicationTypes(IAsyncResult result);
        PublishInfoData[] EndGetListPublishInfo(IAsyncResult result);
        QueueMessageData[] EndGetListQueueMessages(IAsyncResult result);
        QueueData[] EndGetListQueues(IAsyncResult result);
        TemplateType[] EndGetListTemplateTypes(IAsyncResult result);
        WindowsUser[] EndGetListWindowsDomainUsers(IAsyncResult result);
        WorkflowScriptType[] EndGetListWorkflowScriptTypes(IAsyncResult result);
        XElement EndGetListXml(IAsyncResult result);
        string EndGetPredefinedBatchOperationName(IAsyncResult result);
        ProcessDefinitionAssociationDictionary EndGetProcessDefinitionsForItems(IAsyncResult result);
        IdentifiableObjectData[] EndGetSearchResults(IAsyncResult result);
        IdentifiableObjectData[] EndGetSearchResultsPaged(IAsyncResult result);
        XElement EndGetSearchResultsXml(IAsyncResult result);
        XElement EndGetSearchResultsXmlPaged(IAsyncResult result);
        SecurityDescriptorDataDictionary EndGetSecurityDescriptorsForSubjectsIds(IAsyncResult result);
        ArrayOfTcmUri EndGetSubjectIdsWithApplicationData(IAsyncResult result);
        IdentifiableObjectData[] EndGetSystemWideList(IAsyncResult result);
        XElement EndGetSystemWideListXml(IAsyncResult result);
        string EndGetSystemXsd(IAsyncResult result);
        string EndGetTcmUri(IAsyncResult result);
        TridionLanguageInfo[] EndGetTridionLanguages(IAsyncResult result);
        SchemaData EndGetVirtualFolderTypeSchema(IAsyncResult result);
        RenderedItemData EndGetWorkItemSnapshot(IAsyncResult result);
        bool EndIsExistingObject(IAsyncResult result);
        bool EndIsPublished(IAsyncResult result);
        bool EndIsValidTridionWebSchemaXml(IAsyncResult result);
        RepositoryLocalObjectData EndLocalize(IAsyncResult result);
        OrganizationalItemData EndLock(IAsyncResult result);
        RepositoryLocalObjectData EndMove(IAsyncResult result);
        KeywordData EndMoveToKeyword(IAsyncResult result);
        PredefinedBatchOperation? EndParsePredefinedBatchOperation(IAsyncResult result);
        RenderedItemData EndPreviewItem(IAsyncResult result);
        PublishTransactionData[] EndPublish(IAsyncResult result);
        void EndPurgeApplicationData(IAsyncResult result);
        int EndPurgeOldVersions(IAsyncResult result);
        void EndPurgeQueue(IAsyncResult result);
        IdentifiableObjectData EndRead(IAsyncResult result);
        ApplicationData[] EndReadAllApplicationData(IAsyncResult result);
        ApplicationData EndReadApplicationData(IAsyncResult result);
        ApplicationDataDictionary EndReadApplicationDataForSubjectsIds(IAsyncResult result);
        SchemaFieldsData EndReadSchemaFields(IAsyncResult result);
        ActivityInstanceData EndReAssignActivity(IAsyncResult result);
        ClassificationInfoData EndReClassify(IAsyncResult result);
        void EndReIndex(IAsyncResult result);
        WorkItemData[] EndRemoveFromWorkflow(IAsyncResult result);
        RenderedItemData EndRenderItem(IAsyncResult result);
        BundleTypeData[] EndResolveBundleTypes(IAsyncResult result);
        PublishContextData[] EndResolveItems(IAsyncResult result);
        ActivityInstanceData EndRestartActivity(IAsyncResult result);
        ActivityInstanceData EndResumeActivity(IAsyncResult result);
        VersionedItemData EndRollback(IAsyncResult result);
        IdentifiableObjectData EndSave(IAsyncResult result);
        void EndSaveApplicationData(IAsyncResult result);
        ActivityInstanceData EndStartActivity(IAsyncResult result);
        ProcessInstanceData EndStartWorkflow(IAsyncResult result);
        ActivityInstanceData EndSuspendActivity(IAsyncResult result);
        IdentifiableObjectData EndTryCheckOut(IAsyncResult result);
        string EndTryGetTcmUri(IAsyncResult result);
        IdentifiableObjectData EndTryRead(IAsyncResult result);
        ClassificationInfoData EndUnClassify(IAsyncResult result);
        VersionedItemData EndUndoCheckOut(IAsyncResult result);
        PublishTransactionData EndUndoPublishTransaction(IAsyncResult result);
        RepositoryLocalObjectData EndUnLocalize(IAsyncResult result);
        OrganizationalItemData EndUnlock(IAsyncResult result);
        PublishTransactionData[] EndUnPublish(IAsyncResult result);
        IdentifiableObjectData EndUpdate(IAsyncResult result);
        void EndValidateXml(IAsyncResult result);
        ActivityInstanceData FinishActivity(string activityInstanceId, ActivityFinishData activityFinishData, ReadOptions readOptions);
        ProcessHistoryData ForceFinishProcess(string processInstanceId, string approvalStatusId, ReadOptions readOptions);
        string GetApiVersion();
        string[] GetApplicationIds();
        SecurityDescriptorDataDictionary GetContentSecurityDescriptorsForOrgItemIds(string[] organizationalItemIds);
        UserData GetCurrentUser();
        IdentifiableObjectData GetDefaultData(ItemType itemType, string containerId, ReadOptions readOptions);
        TridionEnumValue[] GetEnumValues(string type);
        InstanceData GetInstanceData(string schemaId, string containerItemId, ReadOptions readOptions);
        IdentifiableObjectData[] GetList(string id, SubjectRelatedListFilterData filter);
        DirectoryServiceUser[] GetListDirectoryServiceAllUsers(string directoryServiceName);
        DirectoryServiceUser[] GetListDirectoryServiceGroupMembers(string directoryServiceName, string groupDN);
        string[] GetListDirectoryServiceNames();
        DirectoryServiceUser[] GetListDirectoryServiceUsers(string directoryServiceName, DirectoryUsersFilter filter);
        XElement GetListExternalLinks(string id);
        PublicationType[] GetListPublicationTypes();
        PublishInfoData[] GetListPublishInfo(string itemId);
        QueueMessageData[] GetListQueueMessages(int queueId);
        QueueData[] GetListQueues();
        TemplateType[] GetListTemplateTypes(ItemType? itemType);
        WindowsUser[] GetListWindowsDomainUsers(string domainName);
        WorkflowScriptType[] GetListWorkflowScriptTypes();
        XElement GetListXml(string id, SubjectRelatedListFilterData filter);
        string GetPredefinedBatchOperationName(PredefinedBatchOperation operation);
        ProcessDefinitionAssociationDictionary GetProcessDefinitionsForItems(string[] itemIds, ProcessDefinitionType processDefinitionType);
        IdentifiableObjectData[] GetSearchResults(SearchQueryData filter);
        IdentifiableObjectData[] GetSearchResultsPaged(SearchQueryData filter, int startRowIndex, int maxRows);
        XElement GetSearchResultsXml(SearchQueryData filter);
        XElement GetSearchResultsXmlPaged(SearchQueryData filter, int startRowIndex, int maxRows);
        SecurityDescriptorDataDictionary GetSecurityDescriptorsForSubjectsIds(string[] subjectIds);
        ArrayOfTcmUri GetSubjectIdsWithApplicationData(string applicationId);
        IdentifiableObjectData[] GetSystemWideList(SystemWideListFilterData filter);
        XElement GetSystemWideListXml(SystemWideListFilterData filter);
        string GetSystemXsd(string filename);
        string GetTcmUri(string baseUri, string contextRepositoryUri, uint? version);
        TridionLanguageInfo[] GetTridionLanguages();
        SchemaData GetVirtualFolderTypeSchema(string namespaceUri);
        RenderedItemData GetWorkItemSnapshot(string workItemId);
        bool IsExistingObject(string id);
        bool IsPublished(string itemId, string publicationTargetId, bool isPublishedInContext);
        bool IsValidTridionWebSchemaXml(SchemaData data);
        RepositoryLocalObjectData Localize(string id, ReadOptions readBackOptions);
        OrganizationalItemData Lock(string organizationalItemId, ReadOptions readBackOptions);
        RepositoryLocalObjectData Move(string id, string destinationId, ReadOptions readBackOptions);
        KeywordData MoveToKeyword(string sourceKeywordId, string destinationId, ReadOptions readBackOptions);
        PredefinedBatchOperation? ParsePredefinedBatchOperation(string operation);
        RenderedItemData PreviewItem(RepositoryLocalObjectData itemData, TemplateData templateData, PublishInstructionData publishInstruction, string publicationTargetId);
        PublishTransactionData[] Publish(string[] ids, PublishInstructionData publishInstruction, string[] targets, PublishPriority? priority, ReadOptions readOptions);
        void PurgeApplicationData(string applicationId);
        int PurgeOldVersions(PurgeOldVersionsInstructionData instruction);
        void PurgeQueue(int queueId);
        IdentifiableObjectData Read(string id, ReadOptions readOptions);
        ApplicationData[] ReadAllApplicationData(string subjectId);
        ApplicationData ReadApplicationData(string subjectId, string applicationId);
        ApplicationDataDictionary ReadApplicationDataForSubjectsIds(string[] subjectIds, string[] applicationIds);
        SchemaFieldsData ReadSchemaFields(string schemaId, bool expandEmbeddedFields, ReadOptions readOptions);
        ActivityInstanceData ReAssignActivity(string activityInstanceId, string newAssigneeId, ReadOptions readBackOptions);
        ClassificationInfoData ReClassify(string id, string[] keywordIdsToRemove, string[] keywordIdsToAdd, ReadOptions readOptions);
        void ReIndex(string id);
        WorkItemData[] RemoveFromWorkflow(string[] subjectIds, ReadOptions readBackOptions);
        RenderedItemData RenderItem(string itemId, string templateId, PublishInstructionData publishInstruction, string publicationTargetId);
        BundleTypeData[] ResolveBundleTypes(string[] itemIds, bool pruneTree);
        PublishContextData[] ResolveItems(string[] ids, ResolveInstructionData resolveInstruction, string[] targets, ReadOptions readOptions);
        ActivityInstanceData RestartActivity(string activityInstanceId, ReadOptions readBackOptions);
        ActivityInstanceData ResumeActivity(string activityInstanceId, ReadOptions readOptions);
        VersionedItemData Rollback(string id, bool deleteVersions, string comment, ReadOptions readBackOptions);
        IdentifiableObjectData Save(IdentifiableObjectData deltaData, ReadOptions readBackOptions);
        void SaveApplicationData(string subjectId, ApplicationData[] applicationData);
        ActivityInstanceData StartActivity(string activityInstanceId, ReadOptions readBackOptions);
        ProcessInstanceData StartWorkflow(string repositoryId, StartWorkflowInstructionData instruction, ReadOptions readBackOptions);
        ActivityInstanceData SuspendActivity(string activityInstanceId, string reason, DateTime? resumeAt, string resumeBookmark, ReadOptions readBackOptions);
        IdentifiableObjectData TryCheckOut(string id, ReadOptions readBackOptions);
        string TryGetTcmUri(string baseUri, string contextRepositoryUri, uint? version);
        IdentifiableObjectData TryRead(string id, ReadOptions readOptions);
        ClassificationInfoData UnClassify(string id, string[] keywordIds, ReadOptions readOptions);
        VersionedItemData UndoCheckOut(string id, bool permanentLock, ReadOptions readBackOptions);
        PublishTransactionData UndoPublishTransaction(string publishTransactionId, QueueMessagePriority? priority, ReadOptions readBackOptions);
        RepositoryLocalObjectData UnLocalize(string id, ReadOptions readBackOptions);
        OrganizationalItemData Unlock(string organizationalItemId, ReadOptions readBackOptions);
        PublishTransactionData[] UnPublish(string[] ids, UnPublishInstructionData unPublishInstruction, string[] targets, PublishPriority? priority, ReadOptions readOptions);
        IdentifiableObjectData Update(IdentifiableObjectData deltaData, ReadOptions readBackOptions);
        void ValidateXml(IdentifiableObjectData data);
    }
}
